﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using VNet.VisiSuite.Service.Contact.Message.ProductionData;

namespace VNet.VisiSuite.Service.Contact.Message.ProductionData
{
    [DataContract(Namespace = VisiSuiteNamespace.Uri + "dto/CellProductionData")]
    public class CellProductionData
    {

        [DataMember(IsRequired = true)]
        public bool Success { get; set; }

        [DataMember(IsRequired = true)]
        public string CurrentSku { get; set; }

        [DataMember(IsRequired = true)]
        public string CurrentWorkOrder { get; set; }

        [DataMember(IsRequired = true)]
        public string CurrentQuantity { get; set; }

        [DataMember(IsRequired = true)]
        public string CurrentRemaining { get; set; }
        
        [DataMember(IsRequired = true)]
        public string CurrentPass { get; set; }

        [DataMember(IsRequired = true)]
        public string NextSku { get; set; }

        [DataMember(IsRequired = true)]
        public string NextWorkOrder { get; set; }

        [DataMember(IsRequired = true)]
        public string NextQuantity { get; set; }

        [DataMember(IsRequired = true)]
        public string NextRemaining { get; set; }

        [DataMember(IsRequired = true)]
        public string NextPass { get; set; }

        [DataMember(IsRequired = true)]
        public string TargetCycleTime { get; set; }

        [DataMember(IsRequired = true)]
        public string TargetLoadUnloadTime { get; set; }

        [DataMember(IsRequired = true)]
        public string AverageCycleTime { get; set; }

        [DataMember(IsRequired = true)]
        public string AverageLoadUnloadTime { get; set; }

        [DataMember(IsRequired = true)]
        public string DowntimeDescription { get; set; }

        [DataMember(IsRequired = true)]
        public string DowntimeBackground { get; set; }

        [DataMember(IsRequired = true)]
        public string DowntimeForeground { get; set; }

        [DataMember(IsRequired = true)]
        public string Operator { get; set; }

        // Graph

        [DataMember(IsRequired = true)]
        public DateTime StartTime { get; set; }

        [DataMember(IsRequired = true)]
        public DateTime EndTime { get; set; }

        [DataMember(IsRequired = true)]
        public ObservableCollection<ProductionMeterDataPoint> GraphData { set; get; }

        [DataMember(IsRequired = true)]
        public List<LegendItem> Legend { set; get; }

        [DataMember(IsRequired = true)]
        public List<AxisDetailItem> Axis { get; set; }

        [DataMember(IsRequired = true)]
        public int ProductionMeterWidth { get; set; }

        [DataMember(IsRequired = true)]
        public int ProductionMeterFreq { get; set; }

        [DataMember(IsRequired = true)]
        public List<DowntimeGraphDataItem> DowntimeGraphData { get; set; }

        [DataMember(IsRequired = true)]
        public string DowntimeGraphTitle { get; set; }

    }
}
